package org.locker.domain.vo;

import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import org.locker.common.excel.annotation.ExcelDictFormat;
import org.locker.common.excel.convert.ExcelDictConvert;
import org.locker.domain.Device;
import org.locker.domain.DeviceGrid;

import java.io.Serial;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;


/**
 * 设备信息视图对象 lk_device
 *
 * @author winnie
 * @date 2023-10-11
 */
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = Device.class)
public class DeviceVo implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;

    /**
     * 设备ID
     */
    @ExcelProperty(value = "设备ID")
    private Long deviceId;

    /**
     * 设备编号
     */
    @ExcelProperty(value = "设备编号")
    private String deviceNo;

    /**
     * 设备绑定密码
     */
    @ExcelProperty(value = "设备绑定密码")
    private String devicePwd;

    /**
     * 场地ID
     */
    @ExcelProperty(value = "场地ID")
    private Long positionId;

    /**
     * 场地名称
     */
    private String positionName;

    /**
     * 设备名称
     */
    @ExcelProperty(value = "设备名称")
    private String name;

    /**
     * 设备描述
     */
    @ExcelProperty(value = "设备描述")
    private String describe;

    /**
     * 设备位置
     */
    @ExcelProperty(value = "设备位置")
    private String deviceLocation;

    /**
     * 设备状态：online 上线,offline 离线 , discard 废弃
     */
    @ExcelProperty(value = "设备状态：online 上线,offline 离线 , discard 废弃", converter = ExcelDictConvert.class)
    @ExcelDictFormat(dictType = "device_status")
    private String status;

    /**
     * 渠道(升级系统用到)
     */
    @ExcelProperty(value = "渠道(升级系统用到)")
    private String channel;

    /**
     * 建立时间
     */
    @ExcelProperty(value = "建立时间")
    private Date connectTime;

    /**
     * 掉线时间
     */
    @ExcelProperty(value = "掉线时间")
    private Date lossTime;

    /**
     * 格子总数量
     */
    @ExcelProperty(value = "格子总数量")
    private Long gardNum;

    /**
     * 进入设备后台账号
     */
    @ExcelProperty(value = "进入设备后台账号")
    private String adminUser;

    /**
     * 进入设备后台的密码。
     */
    @ExcelProperty(value = "进入设备后台的密码。")
    private String adminPwd;

    /**
     * 备注
     */
    @ExcelProperty(value = "备注")
    private String remark;

    /**
     * Imli
     */
    @ExcelProperty(value = "Imli")
    private String deviceImei;

    /**
     * 设备卡号
     */
    @ExcelProperty(value = "设备卡号")
    private String deviceCardNo;

    /**
     * 设备通讯卡号ICCID
     */
    @ExcelProperty(value = "设备通讯卡号ICCID")
    private String deviceIccid;

    /**
     * 设备类型： serial 串口锁，bluetooth 蓝牙锁
     */
    @ExcelProperty(value = "设备类型：erial 串口锁，bluetooth 蓝牙锁", converter = ExcelDictConvert.class)
    @ExcelDictFormat(dictType = "device_type")
    private String deviceType;


    /**
     * 设备二维码
     */
    @ExcelProperty(value = "设备二维码")
    private String deviceQrCode;
    @ExcelProperty(value = "设备公众号二维码")
    private String deviceMpQrCode;

    private Integer isShowMp;


    /**
     * 离线时长（单位天）
     */
    private Integer offlineDuration;

    /**
     * 今日订单量
     */
    private Integer todayOrderNumber;

    /**
     * 今日订单收益
     */
    private BigDecimal todayAmount;

    /**
     * 格子信息
     */
    private List<DeviceGrid> deviceGridList;

    /**
     * 押金金额
     */
    private BigDecimal depositAmount;

    /**
     * 收费类型：free 免费  hour 小时, times 按次，special 特殊方式
     */
    private String feeType;

    /**
     * 收费配置:{json}
     */
    private String feeConfig;


    private Long unUsedNums;
}
